Storage devices, particularly Solid State Drives (SSDs), exhibit continuously-changing characteristics over time. SSDs may have unpredictable latency and/or bandwidth due to the underlying software (i.e., firmware) and/or hardware inside the SSD. Prolonged access latency (read/program/erase) due to wear leveling may also affect latency and/or bandwidth. Virtual abstraction—that is, different approaches such as polymorphic SSDs, open-channel SSDs, and lightNVM (a subsystem that supports open-channel SSDs), to name a few—make it hard to predict an SSD's performance characteristics. Finally, different cell densities—such as Single Level Cell (SLC), Multi-Level Cell (MLC), Three Level Cell (TLC), and Quadruple Level Cell (QLC), to name a few—cause quite different characteristics.
But while a storage device might know its own performance characteristics—latency, bandwidth, and so on—the performance characteristics across storage devices is a more complicated matter. That is, although per-device performance is known, it is much bigger problem to predict performance between two or multi devices (including virtual devices). One pair of storage devices might have one calculated latency and/or bandwidth, while another pair of storage devices—even if identical in make, model, and manufacture to the first pair—might have different performance characteristics.
A need remains for a way to predict performance between multiple storage devices.